const http=require('http');
const fs=require('fs');
const path=require('path');

var pagePath=path.join(__dirname,"/index.html");
var iconPath=path.join(__dirname,"/icon.png");
//! 转换url 
function parseUrl(urlStr){
    var index=urlStr.indexOf("?");
    var pathName="";
    var args={};
    var argObj={};

    //! 没有参数的情况 
    if(index==-1){
        pathName=urlStr;
    }else{
        //! 有参数的情况 
        var pathName=urlStr.slice(0,index);
        args=urlStr.slice(index+1);
        var argArr=args.split('&');
        
        for(var i=0;i<argArr.length;i++){
                //! argArr第一个元素是属性名  第二个元素是属性值
            argObj[argArr[i].split("=")[0]]=argArr[i].split("=")[1];

        }
        // console.log(argObj)
        // console.log(pathName);
        // console.log(args);
        // console.log(argArr);
    }
    return {
        pathName:pathName,
        argObj:argObj
    }
}

function router(urlObj,req,res){
    if(urlObj.pathName.indexOf(".png")>0||urlObj.pathName.indexOf(".jpg")>0){
        urlObj.pathName='getimgdata';
    }
    switch(urlObj.pathName){
        case "/":
            showIndex(res);
            break;
        case "getimgdata":
            resImage(res);
            break;
        case "/getlist":
            showList(res);
            break;
        case "/del":
            deleteFile(urlObj.argObj,res);
            break;
    }
}

//! 找到网页，响应回去
function showIndex(res){
    var fileContent=fs.readFileSync(pagePath);
    res.writeHead(200,{"Content-Type":'textml;charset=utf8'});
    res.write(fileContent);

    res.end();
}
//! 图片显示 
function resImage(res){
    var imgContent=fs.readFileSync(iconPath);
    res.writeHead(200,{"Content-Type":"img/png"});
    res.write(imgContent);
    res.end()
}
//! 得到文件列表数据 
function showList(res){
    var dirPath=path.join(__dirname,"/fileDir");
    var files=fs.readdirSync(dirPath);
    var fileList=[];
    for(var i=0;i<files.length;i++){
        var filePath=path.join(dirPath,"/"+files[i]);
        var fileObj=fs.statSync(filePath);

        var obj={}
        obj.fileName=files[i];
        obj.fileTime=fileObj.ctimeMs;
        obj.fileSize=fileObj.size;
        obj.fileType=fileObj.isFile()?"file":"folder"
        fileList.push(obj);
    }
    var jsonStr=JSON.stringify(fileList);
    res.writeHead(200,{"Content-Type":"text/plain"});
    res.write(jsonStr);
    res.end()
}
//! 删除 
function deleteFile(argObj,res){
    // console.log(argObj);
    var delId=argObj.delId;

    var dirPath=path.join(__dirname,'/fileDir');
    var files=fs.readdirSync(dirPath);
    for(var i=0;i<files.length;i++){
        var fileObj=fs.statSync(path.join(dirPath,'/'+files[i]));
        
        if(delId.indexOf(fileObj.ctimeMs)>0){
            // console.log("sucess");
            //! 简单写的删文件   此处添加删除文件夹函数
            fs.unlinkSync(path.join(dirPath,'/'+files[i]));
            res.end("sucess");
            break;
        }
    }

}

http.createServer((req,res)=>{
    /**
     *! 协议名字  地址端口号     资源路径  前端传过来的参数 多个参数&连接
     *! http://localhost:8081/pathname?delId=15630258&pageId=10
     *!                       req.url指端口或者域名之后的部分
     */
    var urlStr=req.url;
    var urlObj=parseUrl(urlStr);
    console.log(urlObj);
    router(urlObj,req,res)

}).listen(8081)
